package cn.stacey.day13;

import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//可以写入UTF-8的流 支持中文，DataOutputStream可以支持
public class Server2 {
	public static void main(String[] args) {
		//下面的没有放到try()里关闭，而是放在finally里面关闭，是因为输入输出流放在try中就执行不到下面的输入输出
		ServerSocket server=null;
		Socket socket=null;
		InputStream in=null;
		OutputStream out=null;
		try {
			//端口不能用1024以下
			server=new ServerSocket(6666);
			//socket代表连接上的客户端
			//如果有客户端连接，会返回一个socket对象，
			//如果没有连接，accept就会让当前的线程处于阻塞状态
			socket=server.accept();
			System.out.println("连上了一个客户端连接"+"客户端IP"+socket.getInetAddress()+"客户端端口"+socket.getPort());
			
			
			//开始通信
				//服务器读取客户端发来的消息
			in=socket.getInputStream();
			//当服务器只发来一个字符，而在下面in.read()有两个的情况下，后面一个in.read()会处于等待下一个的状态
			System.out.println(in.read());
//			System.out.println(in.read());
			
			//让服务器不断的去读，用循环

			while(true) {
				char read=(char)in.read();
				System.out.println(read);
				if(read=='8') {
					break;
				}
			}
		

			
				//服务器给客户端传递消息

			

			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//要关闭in out socket server 需要写四次try  catch 所以调用下面的方法closeQuitely(Closeable c)
			//要先关闭in和Out  再关闭socket   最后关闭server
				UtilsClose.closeQuitely(in);
				UtilsClose.closeQuitely(out);
				UtilsClose.closeQuitely(socket);
				UtilsClose.closeQuitely(server);
		}
			
	}

}
